/**
 * date：2010-11-25
 * author：eason
 * description：树状组件项目接口.
 */
package com.pickgliss.ui.controls.tree
{
	import flash.display.DisplayObject;
	import flash.display.IDisplayObject;
	import flash.events.IEventDispatcher;

	public interface ITreeItem extends IEventDispatcher
	{
		/**
		 * 该项在树状结构中的深度 set 和 get 属性.
		 * 项层项目的深度为0,项层项目下一层的项目的深度为1,以此类推. 
		 */		
		function get depth():int;
		function set depth(value : int):void;
		
		/**
		 * getParent : 获得父级项目. 
		 * setParent : 设置你级项目.
		 */		
		function getParent():ITreeItem;
		function setParent(item : ITreeItem):void;
		
		/**
		 * 获得项目的数据. 
		 * @return 
		 * 
		 */		
		function getData():*;
		
		/**
		 * 获得显示对象. 
		 * @return 
		 * 
		 */		
		function getView():DisplayObject;
		
		/**
		 * 获得项目的高度. 
		 * Tree组件将使用该方法来定位每个项目的高度,而不是通过getView()的height属性来定位。
		 * @return 
		 * 
		 */		
		function getHeight():Number;
		
		/**
		 * 获得项目的宽度.
		 * Tree组件将使用该方法来定位每个项目的宽度,而不是通过getView()的width属性来定位。
		 * @return 
		 * 
		 */		
		function getWidth():Number;
		
		/**
		 * 添加一个子项目. 
		 * @param item
		 * 
		 */		
		function addChildItem(item : ITreeItem):void;
		
		/**
		 * 获得该项目的所有子项目. 
		 * @param item
		 * 
		 */	
		function getChildItems():Vector.<ITreeItem>;
		
		/**
		 * 该项目是否拥有子项目.
		 * @return 
		 * 
		 */		
		function hasChildren():Boolean;
		
		/**
		 * 该项目是否打开. 
		 * @return 
		 * 
		 */		
		function isOpen():Boolean;
		/**
		 * 打开. 
		 * 
		 */		
		function open():void;
		/**
		 * 关闭. 
		 * 
		 */		
		function close():void;
	}
}